package day10;

import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ExceptionDemo {
	public static void main(String[] args) throws InterruptedException {
		// 运行时异常，编译器无法检测，只能通过谨慎编码来解决
		// java.lang.ArrayIndexOutOfBoundsException 数组越界异常

		// int[] arr;
		// arr =new int[10] ;
		// System.out.println(arr[10]);
		// 非运行时异常，在编码期间，开发工具就能检测出的异常
		// 处理方式：
		System.out.println("start...");
		System.out.println("end...");
		// try catch 捕获异常
		// try {
		// Thread.sleep(3000);
		// throw new InterruptedException();
		// } catch (InterruptedException e) {
		// // TODO Auto-generated catch block
		// e.printStackTrace();
		// System.out.println("睡眠中断");
		// }
		// throws 抛出异常，暂不处理
		Thread.sleep(3000);

	}

	// 以下情况可以使用抛出异常,ma方法调用mb,mc时统一处理，即将异常延后处理
	public void ma() {
		try {
			mb();
			mc();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void mb() throws IOException {
		new File("").createNewFile();
	}

	public void mc() throws IOException {
		new File("").createNewFile();
	}

	// 代码中有多个非运行时异常
	public void method() {
		// 捕获不同异常进行不同处理，try一次catch多次
		
		try {
			Thread.sleep(1000);
			new File("").createNewFile();
			new SimpleDateFormat("").parse("");
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		}
		

		// JDK1.7提供新写法
		// 所有捕获的异常统一处理
		try {
			Thread.sleep(1000);
			new File("").createNewFile();
			new SimpleDateFormat("").parse("");
		} catch (InterruptedException | IOException | ParseException e) {
			System.out.println("服务器正忙...");
		}

	}
}
